package com.gql.lambda;

import org.junit.jupiter.api.Test;

import java.util.Comparator;

/**
 * description: Lambda表达式使用举例
 * @author: gql
 * @date 2022/04
 */
public class Lambda01Test {
    /**
     * Runnable开启线程
     */
    @Test
    public void runnableTest() {
        // 1.传统写法
        Runnable r1 = new Runnable() {
            @Override
            public void run() {
                System.out.println("我爱北京天安门");
            }
        };
        r1.run();

        //**************************************************
        // 2.lambda写法
        Runnable r2 = () -> System.out.println("我爱北京故宫");
        r2.run();
    }


    /**
     * Comparable比较器
     */
    @Test
    public void comparatorTest() {
        // 1.传统写法
        Comparator<Integer> com1 = new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return Integer.compare(o1, o2);
            }
        };
        int result1 = com1.compare(12, 21);
        // -1,表明o1 < o2
        System.out.println("result1 = " + result1);

        //**************************************************
        // 2.lambda写法
        Comparator<Integer> com2 = (o1, o2) -> Integer.compare(o1, o2);
        int result2 = com2.compare(12, 21);
        System.out.println("result2 = " + result2);

        // 3.方法引用写法
        Comparator<Integer> com3 = Integer::compare;
        int result3 = com3.compare(12, 21);
        System.out.println("result3 = " + result3);
    }
}
